package com.yxym.homework;

public class CustomGeneric_ {
    public static void main(String[] args) {
        Tiger<Double,String,Integer> tiger = new Tiger<>("小贝");
        //tiger.setR("小黑");
        tiger.setT(20.0);
        tiger.setN(10);
        tiger.setR("小白");
        System.out.println(tiger);
    }
}

//1.T ,R ,N泛型的标识符，一般是单个大写字母
//2.泛型的标识符可以有多个
//3.普通成员可以使用泛型
//4.泛型数组不能初始化（数组在new时，不能确定T的类型，就无法在内存开辟空间）
//5.静态方法不能使用类的泛型（静态是和类相关的，对象还没创建，所以，静态方法和属性使用了泛型，
//jvm无法完成初始化
class Tiger<T ,R ,N>{
    String name;
    R r;//属性使用泛型
    T t;
    N n;

    public Tiger(String name, R r, T t, N n) {
        this.name = name;
        this.r = r;
        this.t = t;
        this.n = n;
    }

    public Tiger(String name){
        this.name = name;
    }

    //方法使用泛型
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public R getR() {
        return r;
    }

    public void setR(R r) {
        this.r = r;
    }

    public T getT() {
        return t;
    }

    public void setT(T t) {
        this.t = t;
    }

    public N getN() {
        return n;
    }

    public void setN(N n) {
        this.n = n;
    }

    @Override
    public String toString() {
        return "Tiger{" +
                "name='" + name + '\'' +
                ", r=" + r +
                ", t=" + t +
                ", n=" + n +
                '}';
    }
}